home *** CD-ROM | disk | FTP | other *** search
/ Hackers Underworld 2: Forbidden Knowledge / Hackers Underworld 2: Forbidden Knowledge.iso / VIRUS / PS_VIR1.TXT < prev    next >
Text File  |  1994-07-17  |  20KB  |  448 lines

  1.     //==//  //  //  /||      //      //====  //==//  //|   //
  2.    //  //  //  //  //||     //      //      //  //  //||  //
  3.   //==//  //==//  //=||    //      //      //  //  // || //
  4.  //      //  //  //  ||   //      //      //  //  //  ||//
  5. //      //  //  //   ||  //====  //====  //==//  //   ||/
  6.  
  7. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  8. DISCLAIMER: The author hereby disclaims himself
  9. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  10. DEDICATION: This was written to make the lives
  11.   of scum such as Patty Hoffman, John McAffee,
  12.   and Ross Greenberg a living hell.
  13. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  14. OTHER STUFF:  Thanks go to The Shade of Sorrow,
  15.   Demogorgon, and Orion Rouge on their comments
  16.   (which I occasionally listened to!).   Thanks
  17.   also to Hellraiser, who gave me an example of
  18.   some virus source code (his own, of course).
  19. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  20.  
  21. Dark Angel's Phunky Virus Writing Guide
  22. ---- ------- ------ ----- ------- -----
  23. Virii are  wondrous creations written for the sole purpose of spreading and
  24. destroying the  systems of unsuspecting fools.  This eliminates the systems
  25. of simpletons  who can't  tell that there is a problem when a 100 byte file
  26. suddenly blossoms  into a  1,000 byte  file.   Duh.  These low-lifes do not
  27. deserve to  exist, so  it is  our sacred duty to wipe their hard drives off
  28. the face of the Earth.  It is a simple matter of speeding along survival of
  29. the fittest.
  30.  
  31. Why did  I create  this guide?  After writing several virii, I have noticed
  32. that virus  writers generally  learn how to write virii either on their own
  33. or by  examining the  disassembled code  of  other  virii.    There  is  an
  34. incredible lack  of information  on the  subject.   Even books published by
  35. morons such as Burger are, at best, sketchy on how to create a virus.  This
  36. guide will show you what it takes to write a virus and also will give you a
  37. plethora of source code to include in your own virii.
  38.  
  39. Virus writing  is not  as hard  as you  might first  imagine.   To write an
  40. effective virus,  however, you  *must*  know  assembly  language.    Short,
  41. compact code  are hallmarks  of assembly  language and  these are desirable
  42. characteristics of  virii.  However, it is *not* necessary to write in pure
  43. assembly.   C may  also be  used, as  it allows almost total control of the
  44. system while  generating relatively compact code (if you stay away from the
  45. library functions).   However,  you still  must access  the interrupts,  so
  46. assembly knowledge  is still  required.  However, it is still best to stick
  47. with pure  assembly,  since  most  operations  are  more  easily  coded  in
  48. assembly.  If you do not know assembly, I would recommend picking up a copy
  49. of The Microsoft Macro Assembler Bible (Nabajyoti Barkakati, ISBN #: 0-672-
  50. 22659-6).   It is an easy-to-follow book covering assembly in great detail.
  51. Also get yourself a copy of Undocumented DOS (Schulman, et al, ISBN #0-201-
  52. 57064-5), as it is very helpful.
  53.  
  54. The question  of which  compiler to  use arises  often.   I  suggest  using
  55. Borland Turbo  Assembler and/or  Borland C++.   I  do not  have a  copy  of
  56. Zortech C  (it was  too large  to download), but I would suspect that it is
  57. also a good choice.  Stay away from Microsoft compilers, as they are not as
  58. flexible nor as efficient as those of other vendors.
  59.  
  60. A few more items round out the list of tools helpful in constructing virii.
  61. The latest version of Norton Utilities is one of the most powerful programs
  62. available, and  is immeasurably  helpful.   MAKE SURE YOU HAVE A COPY!  You
  63. can find  it on  any decent board.  It can be used during every step of the
  64. process, from  the writing  to the testing.  A good debugger helps.  Memory
  65. management  utilities   such  as   MAPMEM,  PMAP,   and  MARK/RELEASE,  are
  66. invaluable, especially  when coding  TSR virii.   Sourcer,  the  commenting
  67. disassembler, is  useful when  you wish  to examine the code of other virii
  68. (this is a good place to get ideas/techniques for your virus).
  69.  
  70. Now that  you have  your tools,  you are  ready to  create a  work  of  art
  71. designed to smash the systems of cretins.  There are three types of virii:
  72.  
  73.      1) Tiny virii (under 500 bytes) which are designed to be  undetectable
  74.         due to their small size.   TINY  is  one  such  virus.    They  are
  75.         generally very simple because their code length is so limited.
  76.      2) Large  virii  (over 1,500 bytes)   which   are   designed   to   be
  77.         undetectable because they cover their tracks very  well  (all  that
  78.         code DOES have a use!).  The best example  of  this  is  the  Whale
  79.         virus, which is perhaps the best 'Stealth' virus in existence.
  80.      3) Other virii which are not designed to be hidden at all (the writers
  81.         don't give  a  shit).    The  common  virus  is  like  this.    All
  82.         overwriting virii are in this category.
  83.  
  84. You must  decide which  kind of  virus you wish to write.  I will mostly be
  85. discussing  the  second  type  (Stealth  virii).    However,  many  of  the
  86. techniques discribed  may be easily applied to the first type (tiny virii).
  87. However, tiny  virii generally do not have many of the "features" of larger
  88. virii, such  as  directory  traversal.    The  third  type  is  more  of  a
  89. replicating trojan-type,  and will  warrant a  brief  (very,  very  brief!)
  90. discussion later.
  91.  
  92. A virus may be divided into three parts: the replicator, the concealer, and
  93. the bomb.   The  replicator part  controls the spread of the virus to other
  94. files, the concealer keeps the virus from being detected, and the bomb only
  95. executes when  the activation  conditions of the virus (more on that later)
  96. are satisfied.
  97.  
  98. -=-=-=-=-=-=-=-
  99. THE REPLICATOR
  100. -=-=-=-=-=-=-=-
  101. The job  of the  replicator is to spread the virus throughout the system of
  102. the clod  who has caught the virus.  How does it do this without destroying
  103. the file it infects?  The easiest type of replicator infects COM files.  It
  104. first saves  the first  few bytes  of the  infected file.  It then copies a
  105. small portion of its code to the beginning of the file, and the rest to the
  106. end.
  107.  
  108.   +----------------+      +------------+
  109.   | P1 | P2        |      | V1 | V2    |
  110.   +----------------+      +------------+
  111.  The uninfected file     The virus code
  112.  
  113. In the  diagram, P1 is part 1 of the file, P2 is part 2 of the file, and V1
  114. and V2  are parts 1 and 2 of the virus.  Note that the size of P1 should be
  115. the same  as the size of V1, but the size of P2 doesn't necessarily have to
  116. be the  same size  as V2.   The  virus first  saves P1 and copies it to the
  117. either 1)  the end  of the  file or 2) inside the code of the virus.  Let's
  118. assume it copies the code to the end of the file.  The file now looks like:
  119.  
  120.   +---------------------+
  121.   | P1 | P2        | P1 |
  122.   +---------------------+
  123.  
  124. Then, the  virus copies  the first  part of  itself to the beginning of the
  125. file.
  126.  
  127.   +---------------------+
  128.   | V1 | P2        | P1 |
  129.   +---------------------+
  130.  
  131. Finally, the virus copies the second part of itself to the end of the file.
  132. The final, infected file looks like this:
  133.  
  134.   +-----------------------------+
  135.   | V1 | P2        | P1 | V2    |
  136.   +-----------------------------+
  137.  
  138. The question  is: What  the fuck  do V1 and V2 do?  V1 transfers control of
  139. the program to V2.  The code to do this is simple.
  140.  
  141.      JMP FAR PTR Duh       ; Takes four bytes
  142. Duh  DW  V2_Start          ; Takes two bytes
  143.  
  144. Duh is  a far pointer (Segment:Offset) pointing to the first instruction of
  145. V2.   Note that  the value  of Duh must be changed to reflect the length of
  146. the file  that is  infected.   For example,  if the  original size  of  the
  147. program is  79 bytes,  Duh must  be changed  so  that  the  instruction  at
  148. CS:[155h] is  executed.   The value of Duh is obtained by adding the length
  149. of V1,  the original size of the infected file, and 256 (to account for the
  150. PSP).  In this case, V1 = 6 and P1 + P2 = 79, so 6 + 79 + 256 = 341 decimal
  151. (155 hex).
  152.  
  153. An alternate, albeit more difficult to understand, method follows